The present invention relates to the field of virtual memory management and, more particularly, to optimizing the allocation of virtual memory in a virtual machine based upon the previous mapping of the virtual memory blocks.
Virtual machines provide a variety of critical functions for computing networks. Since multiple virtual machines can operate on a single physical machine, virtual machines increase the flexibility of the network without as great an increase in cost and overhead as incorporating additional physical machines. However, coordinating the allocation of virtual memory with the corresponding physical memory of the physical machine often results in decreasing the effectiveness of using virtual machines.
The allocation algorithms used by conventional virtual memory allocators tend only to focus on the availability of the virtual memory blocks. As such, additional overhead is generated during allocation when the allocation algorithm selects virtual memory blocks that are available and have not been previously used by the virtual machine to fulfill a previous request. Because the selected available virtual memory blocks have not been previously used, the virtual memory block may not have been pre-allocated by the hypervisor or management mechanism. This translates into a delay in the writing of data by the requestor while the allocation is resolved between the virtual and physical memory.
Thus, these delays increase exponentially with the number of virtual machines running on the physical machine and the quantity of allocation requests generated by their processes and/or applications. Conventional virtual memory allocation approaches, therefore, limit the overall effectiveness of virtual machines.